package com.sss.hloster0502;

public class QuickSort {

	public QuickSort(int a[]) {// 快速排序
		quick(a);
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + "   ");
		}
	}

	public int getMiddle(int[] list, int low, int high) {
		int temp = list[low];// 数组的第一个作为中轴
		while (low < high) {
			while (low < high && list[high] >= temp) {
				high--;
			}
			list[low] = list[high];// 比中轴小的记录移到低端
			while (low < high && list[low] <= temp) {
				low++;
			}
			list[high] = list[low];// 比中轴大的记录移到高端
		}
		list[low] = temp;// 中轴记录到尾
		return low;
	}

	public void quickSort(int[] list, int low, int high) {// 递归函数
		if (low < high) {
			int middle = getMiddle(list, low, high);// 将list数组进行一分为二
			quickSort(list, low, middle - 1);// 对低字表经进行递归排序
			quickSort(list, middle + 1, high);// 对高字表进行递归排序
		}
	}

	public void quick(int[] a2) {
		if (a2.length > 0) {                            // 查看数组是否为空
			quickSort(a2, 0, a2.length - 1);
		}
	}
}
